package behaviour.chain.chain_demo1;

/**
 * 责任链模式
 * 请求发送者与接收者解耦
 * 意图：避免请求发送者与接收者耦合在一起，让多个对象都有可能接收请求，
 * 将这些对象连接成一条链，并且沿着这条链传递请求，直到有对象处理它为止。
 * <p>
 * 主要解决：职责链上的处理者负责处理请求，客户只需要将请求发送到职责链上即可，
 * 无须关心请求的处理细节和请求的传递，所以职责链将请求的发送者和请求的处理者解耦了。
 * <p>
 * 何时使用：在处理消息的时候以过滤很多道。
 *
 * @author yeyangtao
 * @date 2020/6/24 14:41
 */
public class ChainDemo {
    public static void main(String[] args) {
        AbstractLogger abstractLogger = getLogger();
        abstractLogger.loadMessage(2,"这是debug级别日志");
    }

    private static AbstractLogger getLogger() {
        AbstractLogger info = new InfoLogger(AbstractLogger.INFO);
        AbstractLogger debug = new DebugLogger(AbstractLogger.DEBUG);
        AbstractLogger error = new ErrorLogger(AbstractLogger.ERROR);

        info.setNext(debug);
        debug.setNext(error);
        return info;
    }
}
